package com.jxust.dataformat.handler;

import java.util.Map;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import com.jxust.dataformat.entity.User;

@Controller
public class DataFormatHandler {
	/**
	 * 跳转到输入页面input.jsp
	 * 
	 * @param map
	 * @return
	 */
	@RequestMapping("/input")
	public String dataformat(Map<String, Object> map) {
		/**
		 * 对应 form表单的 modelAttribute="user"
		 *  因为表单默认是要回显的，这里传入一个空对象
		 */
		map.put("user", new User());
		return "input";
	}

	/**
	 * input界面提交表单数据的处理方法，在这个方法中进行数据校验
	 *  注意： 
	 *  需要校验 bean 对象和其绑定结果对象或错误结果（Error)
	 * @Valid User user,BindingResult result 两个入参必须成对出现，中间不允许其他入参分隔
	 * @param user
	 * @param result
	 * @return
	 */
	@RequestMapping("/testinput")
	public String testinput(@Valid User user, BindingResult result) {
		System.out.println(user.toString());
		/**
		 * 类型转换失败时的错误信息输出
		 */
		if (result.getErrorCount() > 0) {
			System.out.println("出错了...");
			for (FieldError error : result.getFieldErrors()) {
				System.out.println(error.getField() + ":" + error.getDefaultMessage());
			}
			// 验证出错，则转向特定的页面（这里是之前的输入的页面）
			return "input";
		}
		return "success";
	}
}
